<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
    <script>
      // 1. 写在原型prototype上的属性 不能传参
      // 动物类
        function Animal(ke,color,age) {
            this.ke=ke;
            this.color=color;
            this.age=age;
            this.run=function(){
              console.log(this.ke+"跑")
            }
        }
        Animal.prototype.leg="4";
        Animal.prototype.eat=function(){
          console.log(this.ke+"吃")
        }

        // 猫类
        function Cat(name,eyes){
          this.name=name;
          this.eyes=eyes;
          this.sajiao=function(){}
          // 1.构造函数继承
          // 只能继承构造函数内部this上的属性和方法
          // 原型上的内容无法继承
          // 父类.call(this,参数)
          Animal.call(this,"猫科","黑色","3")
          // Animal.apply(this,["猫科","黑色","3"])
        }
      // 2. 原型链继承 缺点无法实现多继承
      // 子类的原型=new 父类()
       Cat.prototype=new Animal()
      
      let Tom=new Cat("汤姆",2);
      console.log(Tom.name)
      // 调用父类this的属性和方法
      console.log(Tom.color)
      Tom.run()
      // 调用父类原型上的属性和方法
      console.log(Tom.leg)
      Tom.eat();

    </script>
</body>
</html>